package com.ego.service.impl;

import com.ego.commons.exception.DaoException;
import com.ego.commons.pojo.EasyUIDatagrid;
import com.ego.commons.pojo.EgoResult;
import com.ego.commons.utils.IDUtils;
import com.ego.dubbo.service.TbItemCatDubboService;
import com.ego.dubbo.service.TbItemParamDubboService;
import com.ego.pojo.TbItemParam;
import com.ego.pojo.TbItemParamChild;
import com.ego.service.TbItemParamService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Service
public class TbItemParamServiceImpl implements TbItemParamService {

    @Reference
    private TbItemParamDubboService tbItemParamDubboService;

    @Reference
    private TbItemCatDubboService tbItemCatDubboService;


    /**
     *分页显示商品信息
     * @param page 页码
     * @param rows 每页大小
     * @return easyui要的模板数据
     */
    @Override
    public EasyUIDatagrid showItemParam(int page, int rows) {
        List<TbItemParam> list = tbItemParamDubboService.selectByPage(page, rows);
        //将TbItemParam中数据，存到TbItemParamChild中
        //创建TbItemParamChild对象
        List<TbItemParamChild> listChild = new ArrayList<>();
        //循环调用
        for (TbItemParam param:list){
            TbItemParamChild child = new TbItemParamChild();
            /*child.setId(param.getId());
            child.setCreated(param.getCreated());
            child.setItemCatId(param.getItemCatId());
            child.setParamData(param.getParamData());
            child.setUpdated(param.getUpdated());*/
            //此处可以调用Spring的BeanUtils工具类实现对象的复制转存
            BeanUtils.copyProperties(param,child);
            child.setItemCatName(tbItemCatDubboService.selectById(param.getItemCatId()).getName());
            //将获得到的child数据全部放入到listChild
            listChild.add(child);
        }
        long total = this.tbItemParamDubboService.selectCount();
        return new EasyUIDatagrid(listChild,total);
    }

    /**
     * 根据类目id查询参数规格模板
     * @param catId
     * @return
     */
    @Override
    public EgoResult showParam(Long catId) {
        TbItemParam tbItemParam = tbItemParamDubboService.selectByCatid(catId);
        if (tbItemParam !=null){
            //成功时保证data不能为空
            return EgoResult.ok(tbItemParam);
        }
        return EgoResult.error("失败");
    }

    /**
     * 新增规格参数模板
     * @param tbItemParam
     * @return
     */
    @Override
    public EgoResult insert(TbItemParam tbItemParam) throws DaoException {
        tbItemParam.setId(IDUtils.genItemId());
        Date date = new Date();
        tbItemParam.setCreated(date);
        tbItemParam.setUpdated(date);
        int index = this.tbItemParamDubboService.insert(tbItemParam);
        if (index ==1){
            return EgoResult.ok();
        }
        return EgoResult.error("新增失败");
    }

    /**
     * 批量删除
     * @param ids
     * @return
     */
    @Override
    public EgoResult delete(Long[] ids) {
        try {
           int index = this.tbItemParamDubboService.delete(ids);
            if (index == 1){
                return EgoResult.ok();
            }
        } catch (DaoException e) {
            e.printStackTrace();
        }
        return EgoResult.error("删除失败");
    }
}
